package com.bestcem.xm.member.dao.mapper;

import com.bestcem.xm.member.entity.mysql.FootprintEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 足迹点mapper
 *
 * @author yf.wang <yf.wang@idiaoyan.com>
 * @version V1.0
 * @date 2021/10/9
 */
@Mapper
public interface FootprintMapper {

    /**
     * 根据 type 和 sourceKey 获取数据
     *
     * @param type
     * @param sourceKey
     * @return
     */
    FootprintEntity findOneByTypeAndSourceKey(@Param("type") Integer type, @Param("sourceKey") String sourceKey);

    /**
     * 根据 orgId 和 memberId 获取数据
     *
     * @param orgId
     * @param memberId
     * @return
     */
    List<FootprintEntity> findByOrgIdAndMemberId(@Param("orgId") String orgId, @Param("memberId") String memberId);

    /**
     * 保存足迹点
     *
     * @param entity
     */
    void saveFootprint(FootprintEntity entity);

    /**
     * 更新
     *
     * @param entity
     */
    void updateContentAndFootprintTimeById(FootprintEntity entity);

    void batchSave(@Param("list") List<FootprintEntity> footprintEntities);

    /**
     * 根据组织id获取足迹点
     *
     * @param orgId
     * @return
     */
    List<FootprintEntity> findByOrgId(@Param("orgId") String orgId);

    /**
     * 根据组织id 获取指定类型的足迹点
     *
     * @param orgId
     * @param type
     * @return
     */
    List<FootprintEntity> findByOrgIdAndType(@Param("orgId") String orgId, @Param("type") int type);

    /**
     * 批量创建行业sample数据
     *
     * @param footprintEntities
     */
    void batchSaveSampleData(List<FootprintEntity> footprintEntities);

    /**
     * 查询数量
     *
     * @param orgId
     * @param memberId
     * @return
     */
    Long countByOrgIdAndMemberId(@Param("orgId") String orgId, @Param("memberId") String memberId);

    /**
     * 查询
     *
     * @param orgId
     * @param memberId
     * @param page
     * @param size
     * @return
     */
    List<FootprintEntity> findPageByOrgIdAndMemberId(@Param("orgId") String orgId,
                                                     @Param("memberId") String memberId,
                                                     @Param("page") Integer page,
                                                     @Param("size") Integer size);

    /**
     *
     *
     * @param isCopyDemo
     * @param sourceKey
     * @return
     */
    List<FootprintEntity> listFootprintsByIsCopy(@Param("isCopyDemo") int isCopyDemo, @Param("type") int sourceKey);

    void updateContent(@Param("id") String id, @Param("content") String content);
}
